/*
  学习目标：泛型接口的使用
  作用：描述大量相似的对象结构
  注意：
    💥泛型接口调用时，不能省略泛型
    🔔属性和方法，都可以访问泛型变量
*/

interface IResonse<T> {
  data: T;
  message: string;
  // 🔔属性和方法，都可以访问泛型变量
  sayHello?: (aa: T) => T;
}

// 第一个接口的返回值类型
const loginRes: IResonse<{ token: string }> = {
  data: {
    token: '12312312312dsfasdf',
  },
  message: '获取成功',
};

loginRes.sayHello({ token: '123' });

// 第二个接口的返回值类型
const delRes: IResonse<null> = {
  data: null,
  message: '删除成功',
};
